home *** CD-ROM | disk | FTP | other *** search
/ Softdisk Supreme / Softdisk Supreme.iso / pc / DSK Files / 0-49 / SD008b.dsk / MATRIX.MAGIC.bas < prev    next >
BASIC Source File  |  2003-06-12  |  3KB  |  53 lines

  1. 5  REM <CTRL-M><CTRL-M>ROTATING AND SHRINKING TRIANGLES     WRITTEN BY ALAN LACY          AUGUST 1978<CTRL-J>
  2. 10  GOTO 1000
  3. 80  HGR : POKE  -16302,0: HCOLOR= 7
  4. 95 PI = 3.14159
  5. 100  DIM X(3,3): DIM X1(3,3): DIM R(3,3)
  6. 105 Z = 1
  7. 106 SKALE = 38
  8. 110 Z =  -Z
  9. 115  READ TX,TY
  10. 116  IF TX = 99  THEN 500: REM  GOTO END OF PROGRAM
  11. 119  REM <CTRL-M><CTRL-M>X,Y TRANSLATIONS FOR CENTERS OF  TRIANGLES
  12. 120  DATA  0,0,.87,.5,.87,1.5,0,2,-.87,1.5,-.87,.5,-1.74,0,-1.74,-1,-.87,-1.5,0,-1,99,99
  13. 125 X3 = 140 +SKALE *TX:Y3 = 80 +SKALE *TY
  14. 129  REM <CTRL-M><CTRL-M><CTRL-M>MATRIX X IS DEFINED IN LINES 130-140. IT HOLDS THE COORDIN-  ATES OF THE ORIGINAL TRIANGLE BEFORE ANY TRANSLATION OR ROTATION.<CTRL-J>
  15. 130 X(1,1) = 0:X(1,2) = 1:X(1,3) = 1
  16. 135 X(2,1) = .87:X(2,2) =  -.5:X(2,3) = 1
  17. 140 X(3,1) =  -.87:X(3,2) =  -.5:X(3,3) = 1
  18. 150  IF Z = 1  THEN 165
  19. 154  REM  <CTRL-M><CTRL-M><CTRL-M>'DEGREES' CONTAINS RESERVED WORD 'GR' SO IT MUST BE SPELLED  DIFFERENTLY TO BE USED AS A VARIABLE.<CTRL-J>
  20. 155  FOR DEGEES = 0 TO 35  STEP 5: REM    DRAWS TRIANGLE STARTING BASE DOWN
  21. 160  GOTO 170
  22. 165  FOR DEGEES = 60 TO 95  STEP 5: REM    DRAWS TRIANGLE STARTING BASE UP
  23. 169  REM <CTRL-M><CTRL-M>LINE 170 CONVERTS DEGREES TO RADIANS
  24. 170 RADIANS = DEGEES *PI/180
  25. 174  REM  <CTRL-M><CTRL-M><CTRL-M>LINES 175 TO 185 HOLD THE VALUES FOR MATRIX R.  MATRIX R COM-BINES EQUATIONS FOR ROTATION, SCALING, AND TRANSLATION.<CTRL-J>
  26. 175 R(1,1) = SKALE * COS(RADIANS):R(1,2) = SKALE * SIN(RADIANS):R(1,3) = 0
  27. 180 R(2,1) =  -SKALE * SIN(RADIANS):R(2,2) = SKALE * COS(RADIANS):R(2,3) = 0
  28. 185 R(3,1) = X3:R(3,2) = Y3:R(3,3) = 1
  29. 190 SKALE = SKALE -SKALE/6
  30. 198  REM <CTRL-M><CTRL-M><CTRL-M>** MATRIX MULTIPLY SUBROUTINE **
  31. 199  REM  LINES 200-250 MULTIPLY  MATRIX X TIMES MATRIX R TO  GIVE MATRIX X1<CTRL-J>
  32. 200  FOR I = 1 TO 3
  33. 210  FOR J = 1 TO 3
  34. 220 X1(J,I) = 0
  35. 230  FOR K = 1 TO 3
  36. 240 X1(J,I) = X1(J,I) +X(J,K) *R(K,I)
  37. 250  NEXT K: NEXT J: NEXT I
  38. 299  REM <CTRL-M><CTRL-M><CTRL-M>LINE 300 DRAWS EACH TRIANGLE<CTRL-J>
  39. 300  HPLOT X1(1,1),X1(1,2) TO X1(2,1),X1(2,2) TO X1(3,1),X1(3,2) TO X1(1,1),X1(1,2)
  40. 310  NEXT DEGEES
  41. 314  REM <CTRL-M><CTRL-M><CTRL-M>LINE 315 LOOPS PROGRAM BACK TO   COMPUTE COORDINATES FOR NEXT SET OF TRIANGLES AT NEW X,Y CENTER COORDINATE<CTRL-J>
  42. 315  GOTO 106
  43. 499  REM  <CTRL-M><CTRL-M><CTRL-M>LINE 500 SETS SCREEN TO MIXED    TEXT AND GRAPHICS BEFORE    ENDING PROGRAM<CTRL-J>
  44. 500  POKE  -16301,0: PRINT "END OF PROGRAM<CTRL-G><CTRL-G><CTRL-G>": END 
  45. 1000  CALL  -936: VTAB 4
  46. 1010  PRINT "THIS PROGRAM USES MATRICES TO STORE THE COORDINATES FOR TRIANGLES AND TO"
  47. 1020  PRINT "MANIPULATE THOSE TRIANGLES IN AN        INTERESTING MANNER."
  48. 1030  PRINT : PRINT "THE PROGRAM IS HEAVILY REMARKED AND     REFERENCES ARE INCLUDED FOR THOSE       INTERESTED IN THIS POWERFUL GRAPHICS    TOOL."
  49. 1040  PRINT : PRINT "HIT <RETURN> TO BEGIN PROGRAM";: GET A$: GOTO 80
  50. 2000  REM <CTRL-M><CTRL-M><CTRL-M>      *** REFERENCES ***<CTRL-J>
  51. 2010  REM  'THE MATHEMATICS OF COMPUTER GRAPHICS', BY JEFFREY L. POSDAMER. 'BYTE' SEP '78, P22 (EXCELLENT)
  52. 2020  REM  GRAPHIC MANIPULATIONS USING MATRICES BY JOEL C. HUNGERFORD. 'BYTE' SEP '78, P156
  53. 2030  REM  MAT FUNCTIONS BY B. ANTONY PATURZO. KILOBAUD MAR '81 P138